package Controladores;

import EP.MetricasContenido.Score;
import EP.Web.Pagina;
import EP.Web.RelacionPaginas;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.sql.SQLException;
import java.util.List;
import java.util.Map;

/**
* @class ControladorScore
* @author Mauricio Alvarez.
* @brief Clase Controlador Score.
*/
public class ControladorScore
{

    /**
     *  @var private Operaciones operaciones
     *  @brief Variable global de tipo clase Score.
    */
    private Score score;


    //////////////////////////
    // CONSTRUCTOR
    //////////////////////////
    public ControladorScore()
    {
        score = new Score();
    }

    
    //////////////////////
    // OPERACIONES
    //////////////////////

    /**
     * @brief Invoca el método CalcularScore de la clase Score.
     * @param Topico, Stopwords, ListaPaginas, ListaRelacionPaginas, TopicoConsultado, OpcionContenido, Umbral, Ranking, factorK1 y factorb.
     * @return Map<Integer, List>
    */
    public Map<Integer, List> CalcularScore(Map<String, Integer> Topico,
                                                 Map<String, Integer> Stopwords,
                                                 List<Pagina> ListaPaginas,
                                                 List<RelacionPaginas> ListaRelacionPaginas,
                                                 String TopicoConsultado,
                                                 int OpcionContenido,
                                                 double Umbral,
                                                 int Ranking,
                                                 double factorK1,
                                                 double factorb) throws FileNotFoundException, IOException, ClassNotFoundException, InstantiationException, IllegalAccessException, SQLException, Error, Exception
    {
        return score.CalcularScore(Topico, Stopwords, ListaPaginas, ListaRelacionPaginas, TopicoConsultado, OpcionContenido, Umbral, Ranking, factorK1, factorb);

    }//FIN CalcularScore


    /**
     * @brief Invoca el método ObtenerMejorPaginaTF_SN de la clase Score.
     * @param Largo del Ranking.
     * @return int
    */
    public int ObtenerMejorPaginaTF_SN(int Ranking) throws ClassNotFoundException, InstantiationException, IllegalAccessException, IOException, SQLException
    {
        return score.ObtenerMejorPaginaTF_SN(Ranking);
    }


    /**
     * @brief Invoca el método ObtenerMejorPaginaTF_N de la clase Score.
     * @param Largo del Ranking.
     * @return int
    */
    public int ObtenerMejorPaginaTF_N(int Ranking) throws ClassNotFoundException, InstantiationException, IllegalAccessException, IOException, SQLException
    {
        return score.ObtenerMejorPaginaTF_N(Ranking);
    }


    /**
     * @brief Invoca el método ObtenerMejorPaginaTF_S de la clase Score.
     * @param Largo del Ranking.
     * @return int
    */
    public int ObtenerMejorPaginaTF_S(int Ranking) throws ClassNotFoundException, InstantiationException, IllegalAccessException, IOException, SQLException
    {
        return score.ObtenerMejorPaginaTF_S(Ranking);
    }


    /**
     * @brief Invoca el método ObtenerMejorPaginaTFIDF_SN de la clase Score.
     * @param Largo del Ranking.
     * @return int
    */
    public int ObtenerMejorPaginaTFIDF_SN(int Ranking) throws ClassNotFoundException, InstantiationException, IllegalAccessException, IOException, SQLException
    {
        return score.ObtenerMejorPaginaTFIDF_SN(Ranking);
    }


    /**
     * @brief Invoca el método ObtenerMejorPaginaTFIDF_N de la clase Score.
     * @param Largo del Ranking.
     * @return int
    */
    public int ObtenerMejorPaginaTFIDF_N(int Ranking) throws ClassNotFoundException, InstantiationException, IllegalAccessException, IOException, SQLException
    {
        return score.ObtenerMejorPaginaTFIDF_N(Ranking);
    }


    /**
     * @brief Invoca el método ObtenerMejorPaginaTFIDF_S de la clase Score.
     * @param Largo del Ranking.
     * @return int
    */
    public int ObtenerMejorPaginaTFIDF_S(int Ranking) throws ClassNotFoundException, InstantiationException, IllegalAccessException, IOException, SQLException
    {
        return score.ObtenerMejorPaginaTFIDF_S(Ranking);
    }


    /**
     * @brief Invoca el método ObtenerMejorPaginaTFIDF_O_SN de la clase Score.
     * @param Largo del Ranking.
     * @return int
    */
    public int ObtenerMejorPaginaTFIDF_O_SN(int Ranking) throws ClassNotFoundException, InstantiationException, IllegalAccessException, IOException, SQLException
    {
        return score.ObtenerMejorPaginaTFIDF_O_SN(Ranking);
    }


    /**
     * @brief Invoca el método ObtenerMejorPaginaTFIDF_O_N de la clase Score.
     * @param Largo del Ranking.
     * @return int
    */
    public int ObtenerMejorPaginaTFIDF_O_N(int Ranking) throws ClassNotFoundException, InstantiationException, IllegalAccessException, IOException, SQLException
    {
        return score.ObtenerMejorPaginaTFIDF_O_N(Ranking);
    }


    /**
     * @brief Invoca el método ObtenerMejorPaginaTFIDF_O_S de la clase Score.
     * @param Largo del Ranking.
     * @return int
    */
    public int ObtenerMejorPaginaTFIDF_O_S(int Ranking) throws ClassNotFoundException, InstantiationException, IllegalAccessException, IOException, SQLException
    {
        return score.ObtenerMejorPaginaTFIDF_O_S(Ranking);
    }


    /**
     * @brief Invoca el método ObtenerMejorPaginaOKAPI de la clase Score.
     * @param Largo del Ranking.
     * @return int
    */
    public int ObtenerMejorPaginaOKAPI(int Ranking) throws ClassNotFoundException, InstantiationException, IllegalAccessException, IOException, SQLException
    {
        return score.ObtenerMejorPaginaOKAPI(Ranking);
    }


    /**
     * @brief Invoca el método ObtenerMejorST_TF_SN de la clase Score.
     * @param Largo del Ranking.
     * @return int
    */
    public int ObtenerMejorST_TF_SN(int Ranking) throws ClassNotFoundException, InstantiationException, IllegalAccessException, IOException, SQLException
    {
        return score.ObtenerMejorST_TF_SN(Ranking);
    }


    /**
     * @brief Invoca el método ObtenerMejorST_TF_N de la clase Score.
     * @param Largo del Ranking.
     * @return int
    */
    public int ObtenerMejorST_TF_N(int Ranking) throws ClassNotFoundException, InstantiationException, IllegalAccessException, IOException, SQLException
    {
        return score.ObtenerMejorST_TF_N(Ranking);
    }


    /**
     * @brief Invoca el método ObtenerMejorST_TF_S de la clase Score.
     * @param Largo del Ranking.
     * @return int
    */
    public int ObtenerMejorST_TF_S(int Ranking) throws ClassNotFoundException, InstantiationException, IllegalAccessException, IOException, SQLException
    {
        return score.ObtenerMejorST_TF_S(Ranking);
    }


    /**
     * @brief Invoca el método ObtenerMejorST_TFIDF_SN de la clase Score.
     * @param Largo del Ranking.
     * @return int
    */
    public int ObtenerMejorST_TFIDF_SN(int Ranking) throws ClassNotFoundException, InstantiationException, IllegalAccessException, IOException, SQLException
    {
        return score.ObtenerMejorST_TFIDF_SN(Ranking);
    }


    /**
     * @brief Invoca el método ObtenerMejorST_TFIDF_N de la clase Score.
     * @param Largo del Ranking.
     * @return int
    */
    public int ObtenerMejorST_TFIDF_N(int Ranking) throws ClassNotFoundException, InstantiationException, IllegalAccessException, IOException, SQLException
    {
        return score.ObtenerMejorST_TFIDF_N(Ranking);
    }


    /**
     * @brief Invoca el método ObtenerMejorST_TFIDF_S de la clase Score.
     * @param Largo del Ranking.
     * @return int
    */
    public int ObtenerMejorST_TFIDF_S(int Ranking) throws ClassNotFoundException, InstantiationException, IllegalAccessException, IOException, SQLException
    {
        return score.ObtenerMejorST_TFIDF_S(Ranking);
    }


    /**
     * @brief Invoca el método ObtenerMejorST_TFIDF_O_SN de la clase Score.
     * @param Largo del Ranking.
     * @return int
    */
    public int ObtenerMejorST_TFIDF_O_SN(int Ranking) throws ClassNotFoundException, InstantiationException, IllegalAccessException, IOException, SQLException
    {
        return score.ObtenerMejorST_TFIDF_O_SN(Ranking);
    }


    /**
     * @brief Invoca el método ObtenerMejorST_TFIDF_O_N de la clase Score.
     * @param Largo del Ranking.
     * @return int
    */
    public int ObtenerMejorST_TFIDF_O_N(int Ranking) throws ClassNotFoundException, InstantiationException, IllegalAccessException, IOException, SQLException
    {
        return score.ObtenerMejorST_TFIDF_O_N(Ranking);
    }


    /**
     * @brief Invoca el método ObtenerMejorST_TFIDF_O_S de la clase Score.
     * @param Largo del Ranking.
     * @return int
    */
    public int ObtenerMejorST_TFIDF_O_S(int Ranking) throws ClassNotFoundException, InstantiationException, IllegalAccessException, IOException, SQLException
    {
        return score.ObtenerMejorST_TFIDF_O_S(Ranking);
    }


    /**
     * @brief Invoca el método ObtenerMejorST_OKAPI de la clase Score.
     * @param Largo del Ranking.
     * @return int
    */
    public int ObtenerMejorST_OKAPI(int Ranking) throws ClassNotFoundException, InstantiationException, IllegalAccessException, IOException, SQLException
    {
        return score.ObtenerMejorST_OKAPI(Ranking);
    }

    

}//FIN CLASE ControladorScore //////////////////////////////////////////////////////////////////////////////////////////